/****************************************************
	文件：SpiderMgr.cs
	作者：HuskyT
	邮箱：1005240602@qq.com
	日期：2020/7/12 13:19:54
	功能：爬虫Mgr
*****************************************************/

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace HTSpider
{
    public class SpiderMgr : Singleton<SpiderMgr>
    {
        /// <summary>
        /// 下载 data 后返回的 响应列表
        /// </summary>
        private List<Rsp> mRspLst;

        public void Init()
        {
            mRspLst = new List<Rsp>();
        }
        /// <summary>
        /// 添加 响应 到响应列表，供 SpiderMgr 处理数据
        /// </summary>
        /// <param name="rsp">下载 data 后返回的 响应</param>
        public void AddRsp(Rsp rsp)
        {
            lock (mRspLst)
            {
                mRspLst.Add(rsp);
            }
        }
        /// <summary>
        /// 爬取数据
        /// </summary>
        /// <param name="req">请求</param>
        public void Crawling(Req req)
        {
            EngineMgr.Instance.AddReq(req);
        }
        /// <summary>
        /// 获取所有响应
        /// </summary>
        public List<Rsp> GetAllRsp()
        {
            return mRspLst;
        }

        public void LogTest()
        {
            string pattern = @"(?is)<a[^>]*?href=(['""\s]?)(?<href>[^'""\s]*)\1[^>]*?>";
            Regex reg = new Regex(pattern);
            MatchCollection match = reg.Matches(mRspLst[0].Content);
            foreach (Match m in match)
            {
                Logger.Log(m.Groups["href"].Value + "<br/>");
            }
        }
    }
}
